#ifndef OPTIONS_COORDS__
#define OPTIONS_COORDS__


#include <list>

#include "base.h"
#include "options.h"

#include "ticpp/ticpp.h"

/** Pozice a pocet pozadavku jedne anteny.
 */
class Antena {
public:
	Antena(): x(0), y(0), demand(1) {}; ///< Defaultni prazdny konstruktor.
	/** Defaultni konstruktor anteny.
	 * \param x x-ova souradnice
	 * \param y y-ova souradnice
	 * \param demand pocet vysilacu na antene
	 */
	Antena(double x, double y, int demand = 1): x(x), y(y), demand(demand) {}
	double x, ///< x-ova souradnice
		y; ///< y-ova souradnice
	int demand; ///< pocet vysilacu na antene
};

/** Nastaveni obecne zadane mapy (Coordinates).
 */
class CoordinatesOptions: public Options {
public:
	/** Defaultni konstruktor. Zinicializuje rodicovske nastaveni. 
	 * \param parent zakladni nastaveni programu
	 */
	CoordinatesOptions(Options & parent): Options(parent), reuse_delete(false) {}
	/** Destruktor, uklidi pripadnou alokovanou pamet.
	 */
	~CoordinatesOptions() {
		if (reuse_delete) {
			delete[] reuse;
		}
	}
	void Read(ticpp::Element * settings);
	void Print();
	std::list<Antena> antenas; ///< seznam anten nactenych z nastaveni
	double * reuse; ///< vektor znovupouzitelnych vzdalenosti
	int reuse_size; ///< pocet prvku vektoru
private:
	bool reuse_delete; ///< byl alokovan vektor znovupouzitelnych vzdalenosti?
	static double reuseDefault_[7]; ///< defaultni vektor znovupouzitelnych vzdalenosti
};

#endif
